// 感觉这道题, 没啥难度,
// 首先是判断压缩方式是否合法,
        // 无非就是判断是否有3个及以上的连续字符,
        // 还有, 就是判断输入是否有字母+数字之外的 ascall 码
        // 还有判断, 是否存在单个2
        // 纯数字
// 其次是进行解压, 使用栈来记录数据
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let str;
rl.on("line", (line)=>{
    if(str === undefined) {
        str = line.trim();
        getResult(str);
        // clear
        str = undefined;
    }
})

function getResult(str) {
    // 是否纯数字
    let reg1 = /^[0-9]+$/g
    if(reg1.test(str)) {
        console.log("!error1")
        return
    }

    // 是否存在数字结尾
    let reg3 = /[0-9]+$/g
    if(reg3.test(str)) {
        console.log("!error2")
        return
    }
    // 是否存在非法字符或大写
    let reg4 = /[^a-z0-9]/g
    if(reg4.test(str)) {
        console.log("!error3")
        return
    }

    // 开始接压缩
    let result = ""
    let stack = []
    for (const char of str) {
        if(!isNaN(char)) { // 数字
            stack.push(char)
        } else {
            if(stack.length) {
                let number = Number(stack.join(""))
                if(number === 0 || number === 1 || number === 2) {
                    console.log("!error4")
                    return
                }
                result = result + char.repeat(number)
                stack.length = 0
            } else {
                result+= char
            }
        }
    }
    // 验证
    if(zip(result) !== str) { // 比如输入为3bb，bbb, 3b4b都是不合法
        console.log("!error5",)
    }
    console.log(result)
}

// 压缩字符串
function zip(str) {
    let result = "";
    let stack = []

    // length = 0时, 直接推
    let count = 1
    for (const char of str) {
        if(stack.length === 0) {
            stack.push(char)
        } else {
            if(stack.at(-1) === char) {
                count++
            } else {
                // 弹出来
                if(count === 2) {
                    result += stack.pop().repeat(2)
                } else {
                    result += (count + stack.pop())
                }
                count = 1
                stack.push(char)
            }
        }
    }
    // 把最后一个元素吐出来
    if(stack.length) {
        if(count === 1) {
            result += stack.pop();
        } else if(count === 2) {
            result += stack.pop().repeat(2)
        }else {
            result += (count + stack.pop())
        }
    }
    return result
}